package com.gujiangbo.future;

/**
 * FutureService 主要用于提交任务
 *
 * @param <IN>
 * @param <OUT>
 */
public interface FutureService<IN, OUT> {

    // 提交不需要返回值的任务，Future.get() 方法返回可能为null
    Future<?> submit(Runnable runnable);

    // 提交需要有返回值的任务，其中Task
    Future<OUT> submit(Task<IN, OUT> task, IN input);

    //创建实现
    static <T, R> FutureService<T, R> newService() {
        return new FutureServiceImpl<T, R>();
    }


}
